自营填单 | 百度->商户
更新时间:2024-06-26
自营填单页/预下单/预支付/库存锁定【百度即时请求商户】
接口描述
在自营模式下,用户提交订单前,百度服务发起请求商户锁定库存,称该过程为预下单,商户收到请求后应检查房价、房态、房量 合法后,创建商户订单锁定库存,返回百度预下单信息。百度订单30min内未支付将自动取消,此时商户可释放库存;
注:一个用户(手机号)在同一时间段只允许存在一笔未支付订单,当发起新的预支付订单时,百度检查该用户是否存在未支付订单,并调用取消接口通知三方取消前一笔未支付订单,释放库存。
预支付,主要目的为提高支付预定成功率,为避免滥用导致业务受损:
- 用户支付成功除极特殊情况,如:酒店会拒单 外,平台不会强制取消用户预定单;
- 防止部分用户频繁提交预支付单,导致其他用户可用房,无法正常预定,同一个用户(手机号)只允许存在一笔未支付订单,创建新的预支付订单将取消前一笔预支付订单;
- 预支付订单30min一直未支付,合作方可自动释放库存;
- 百度做防刷风控,防止作恶用户导致频繁锁库存,无法正常预定,包括不限于手机号、IP、设备、群控软件检测黑名单;
权限说明
为确保对内外请求安全性,添加公共参数并对公共参数进行统一验签,对于百度请求商户,百度在请求参数中添加以下公共参数,对于商户数据推送百度,在推送json数据体最外层key中也添加以下公共参数(详细见各推送数据样例)。
字段名 | 类型 | 长度 | 必填 | 释义 | |
---|---|---|---|---|---|
1 | tp_name | string | 64 | 是 | 渠道号,开发前分配渠道号和私(primary_key),请妥善保管 |
2 | timestamp | int | 10 | 是 | 秒时间戳 |
3 | salt | string | 64 | 是 | 随机串 |
4 | sign | string | 64 | 是 | 签名,签名规则 md5(tp_name + timestamp + salt + primary_key),单纯参数值(不含参数名)拼接,不需要加入参数名 |
注意事项
1.公共参数参数名首字母为小写,post请求时公共参数会包含在请求参数中
请求参数
字段名 | 类型 | 长度 | 必填 | 释义 | |
---|---|---|---|---|---|
1 | tid | string | 64 | 是 | 酒店id |
2 | start | string | 64 | 是 | 起始时间 例:2021-09-01 |
3 | end | string | 64 | 是 | 截止时间 例:2021-09-03 |
4 | bd_pre_order_id | string | 64 | 是 | 百度预支付单号 |
5 | room_type_id | string | 64 | 是 | 物理房型id |
6 | activity_id | string | 64 | 是 | 价格计划id |
7 | room_count | int | - | 是 | 房间数 |
8 | pay_amount | int | - | 是 | 支付金额(price_models.tp_discount_price价格总和 - 百度优惠价格) 单位:分 |
9 | origin_amount | int | - | 是 | 原价(price_models.tp_discount_price价格总和)单位:分 |
9 | cancel_policy | int | - | 是 | 1:免费取消 2:限时取消 3:不可取消 4:付费取消 |
10 | invoice_mode | int | - | 是 | 1:酒店开具发票,前端展示为:如需发票,请向酒店前台索取;2:商户开具发票,注意在填单页将开票信息 提交给商户 |
11 | can_checkin_start | string | 64 | 否 | (钟点房必传字段)小时房入住时间 例:2023-06-16 10:00,如有次日入住为入住时间 + 24:00 如次日01:00入住传25:00 |
12 | can_checkin_end | string | 64 | 否 | (钟点房必传字段)小时房退房时间 例:2023-06-16 14:00,如有次日离店为离店时间 + 24:00 如次日10:00入住传34:00 |
13 | hourage | int | - | 否 | (钟点房必传字段) 小时房入住时间跨度/单位小时 |
14 | customer_realname | string | 64 | 是 | 客人真实姓名,加密存储,加密规范参考附录:敏感信息加密规范 示例:suossmeng@163.com => 加密后 4pyuhKx-enjqoRHsNBjyVw |
15 | customer_mobile | string | 64 | 是 | 客人手机号,加密存储,加密规范参考附录:敏感信息加密规范 |
16 | customer_checkin_time | string | 64 | 是 | 预计到店时间 |
17 | customer_invoice_info | string | - | 否 | 发票信息,json串,发票信息目前由独立接口承接此数据暂无 |
18 | price_models | string | - | 是 | 预定日期范围每日价格,json串 |
19 | bd_mmc_ext | string | 64 | 否 | json结构,包含百度MMC优惠信息,若涉及联合运营发券将通过该字段透传券码信息,用于券码核销、结算,商户将该信息保存至关联订单即可 |
20 | gift_id | string | 64 | 否 | 酒套ID,优惠信息ID |
21 | customer_info_group | string | - | 否 | 接入多间预订,传多个用户信息,间数大于1时,用户名称取该字段,用户电话还取customer_mobile |
22 | extra_params | jsonstring | - | 否 | 扩展字段 |
23 | sale_amount | int | 否 | 加价模式,供应商原始价格总和 | |
24 | 公共参数 | - | - | 是 | 公共参数参考公共参数部分 |
发票信息
字段名 | 类型 | 长度 | 是否必填 | 备注 |
---|---|---|---|---|
need_invoice | int | - | 是 | 是否需要发票 0:否,1是 |
earlly_prepare | int | - | 是 | 是否需要提前开发票,0:不需要 1:需要 |
submit_time | string | 64 | 是 | 提交开票请求时间,yyyy-MM-dd HH:mm:ss |
want_time | string | 64 | 是 | 需要发票时间,yyyy-MM-dd HH:mm:ss |
post_type | int | - | 是 | 发票领取方式:0:前台自取 1:邮寄 2:电子发票 3:送至房间 |
invoice_type | int | - | 是 | 发票类型,1:增值税普通发票 2:增值税专用发票 |
invoice_type_num | string | - | 是 | 支持的发票类型,1:电子普通发票 2:纸质普通发票,3纸质专用发票,如果是多类型英文逗号分隔,示例(1,2) |
comment | string | 256 | 是 | 开票项目,例如:代开房费,住宿费,会议费等 |
invoice_title | string | 256 | 是 | 发票抬头 |
company_tel | string | 64 | 是 | 公司电话 |
company_tax | string | 64 | 否 | 公司税号 |
register_address | string | 256 | 是 | 公司注册地址 |
bank | string | 256 | 是 | 开户行 |
bank_account | string | 256 | 是 | 银行账号 |
receiver_address | string | 256 | 是 | 邮寄地址 |
receiver_name | string | 256 | 是 | 收件人姓名 |
receiver_mobile | string | 64 | 是 | 收件人手机号 |
receiver_email | string | 256 | 是 | 收件人邮箱 |
customer_invoice_info样例
{
"need_invoice": "1",
"earlly_prepare": "1",
"submit_time": "2016-06-24 00:12:21",
"want_time": "2016-06-24 00:12:21",
"post_type": "1",
"invoice_type": "1",
"comment": "代订房费",
"invoice_title": "百度时代网络技术(北京)科技有限公司",
"company_tel": "13548608888",
"company_tax": "12345568888",
"register_address": "北京市海淀区上地十街10号",
"bank": "中国工商银行",
"bank_account": "1234343535453588888",
"receiver_address": "北京市海淀区上地十街10号",
"receiver_name": "Robin",
"receiver_mobile": "13548608888",
"receiver_email": "sjdj@baidu.com"
}
price_models样例
[{
"date": "2021-09-02",
"last_cancel_time": "2021-09-02 11:00:00",
"stock_count": 2,
"market_price": 5000,
"tp_discount_price": 4800,
"vip_price": 0,
"discount_value": 200,
"breakfast": 1
}, {
"date": "2021-09-03",
"last_cancel_time": "2021-09-02 11:00:00",
"stock_count": 2,
"market_price": 5000,
"tp_discount_price": 4800,
"vip_price": 0,
"discount_value": 200,
"breakfast": 1
}, {
"date": "2021-09-04",
"last_cancel_time": "2021-09-02 11:00:00",
"stock_count": 2,
"market_price": 5000,
"tp_discount_price": 4800,
"vip_price": 0,
"discount_value": 200,
"breakfast": 1
}]
bd_mmc_ext样例
[{
"goods_id": "xxx",
"ticket_id": "xxx",
"ticket_type": "xxx",
"rule_desc": "xxx",
"tp_name_en": "xxx",
"ext": {
"lt": "仅限xxx月xx日-xxx月xx日可用",
"lr": "仅限xxx酒店可用",
"rc": "减免金额单位是分"
}
},
{
"goods_id": "xxx",
"ticket_id": "xxx",
"ticket_type": "xxx",
"rule_desc": "xxx",
"tp_name_en": "xxx",
"ext": {
"lt": "仅限xxx月xx日-xxx月xx日可用",
"lr": "仅限xxx酒店可用",
"rc": "减免金额单位是分"
}
}
]
extra_params bd_preferential补贴详情
{
"bd_preferential":{
"2023-12-21":{
"single_return_amount":970, //单间百度补贴
"total_amount":11600 //单间供应商原价
},
"2023-12-22":{
"single_return_amount":1873, //单间百度补贴
"total_amount":22400 //单间供应商原价
}
}
}
响应参数
字段名称 | 字段要求 | 字段类型 | 长度 | 是否必须 | 字段说明 | |
---|---|---|---|---|---|---|
1 | tp_order_id | 商户订单号 | string | 64 | 是 | 商户订单号 |
2 | start | 入住时间 | string | 64 | 是 | 入住时间,例:2021-09-01 00:00:00 |
3 | end | 离店时间 | string | 64 | 是 | 离店时间,例:2021-09-02 00:00:00 |
4 | stock_count | 库存 | int | - | 是 | 在扣减库存后的剩余库存 |
5 | market_price | 市场价/原价/划线价,单位分 | int | - | 是 | 市场价/原价/划线价 |
6 | tp_discount_price | 商户折扣价 | int | - | 是 | 商户折扣价,单位分 |
7 | vip_price | 会员价 | int | - | 是 | 指定用户会员等级的会员价,若无会员价,填0,单位分 |
8 | discount_value | 折扣值 | int | - | 是 | 若:vip_price>0 则:discount_value=market_price-vip_price,若vip_price=0 则:discount_value=market_price-tp_discount_price,单位分 |
9 | tp_order_expire | 订单到期时间 | int | - | 是 | 订单到期时间,超过改时间将自动过期,释放库存 |
10 | tp_order_create_time | 商户订单创建时间 | int | - | 是 | 商户订单创建时间 |
11 | confirm_message | 确认消息 | string | 64 | 是 | 确认消息,用于提示用户,无则置空,例如:价格发生变化等 |
请求示例
Content-Type: application/json
POST {Host}/{path}
{
"tp_name": "xxx",
"timestamp": 1649261092,
"salt": "624dba242f731",
"sign": "827d13b5590c7fc1034137b39d92b90b",
"tid": "29463",
"start": "2022-04-13",
"end": "2022-04-14",
"bd_pre_order_id": "1649261092186146045933X5t1LJJuuzwwZvkY1rn_Ag",
"room_type_id": "-29463",
"activity_id": "Baidu_5076088574335685929",
"room_count": 1,
"origin_amount": 127900,
"pay_amount": 127900,
"cancel_policy": 3,
"invoice_mode": 2,
"customer_realname": "6-FDFQqJXFShom5WMWqezQ",
"customer_mobile": "X5t1LJJuuzwwZvkY1rn_Ag",
"customer_checkin_time": "18:00",
"sale_amount" : 127900,
"price_models": "[{\"last_cancel_time\":\"\",\"stock_count\":99,\"date\":\"2022-04-13\",\"cancel_cut_type\":0,\"cancel_cut_value\":0,\"market_price\":127900,\"tp_discount_price\":127900,\"discount_value\":0,\"vip_price\":0,\"breakfast\":2}]",
"bd_mmc_ext": "[]"
}
响应示例
成功
{
"errno": 0,
"errstr": "",
"desc": "",
"data": {
"tp_order_id": "93b098f15975ae41",
"start": "2021-09-01 00:00:00",
"end": "2021-09-02 00:00:00",
"stock_count": 2,
"market_price": 5000,
"tp_discount_price": 4800,
"vip_price": 0,
"discount_value": 200,
"tp_order_expire": 1630149399,
"tp_order_create_time": 1630139399,
"confirm_message": "正常"
}
}
失败
注:errstr内容将直接提示给用户
{
"errno": 11,
"errstr": "当前已满房",
"desc": "满房",
"data": {}
}
钟点房说明
1.请求参数增加 can_checkin_start,can_checkin_end,hourage
price_models样例
[{
"date": "2023-06-16",
"last_cancel_time": "2023-06-16 11:00:00",
"cancel_cut_type": 0,
"cancel_cut_value": 0,
"stock_count": 2,
"market_price": 5000,
"tp_discount_price": 4800,
"vip_price": 0,
"discount_value": 200,
"breakfast": 1,
"is_hour_room": "T",
"hour_room_info": {
"can_checkin_start": "10:00",
"can_checkin_end": "20:00",
"hourage": 4
}
}]
多间预订说明
1.请求参数增加: customer_info_group
customer_info_group样例
[
{
"customer_realname": "xxxxxx",
},
{
"customer_realname": "xxxxxx",
}
]